------------------------------------------------------------------------

 OpenDCC - NmraDcc 

 Copyright (c) 2008 Alex Shepherd

 This source file is subject of the GNU general public license 2,
 that is available at the world-wide-web at
 http:www.gnu.org/licenses/gpl.txt
------------------------------------------------------------------------

 file:      Description NmraDcc.txt
 author:    
 webpage:   
 history:   
------------------------------------------------------------------------
Call the DCC pin function to define which External Interrupt and Pin to use and also to enable the Pull-Up
Dcc.pin(0, 2, 1);

Call the main DCC Init function to enable the DCC Receiver

Dcc.init( MAN_ID_DIY, 10, FLAGS_OUTPUT_ADDRESS_MODE | FLAGS_DCC_ACCESSORY_DECODER, 0 )

MAN_ID_DIY = 0x0D (CV8 defined in NmraDcc.h)
FLAGS_OUTPUT_ADDRESS_MODE = 0x40  (CV29/541 bit 6 defined in NmraDcc.h)
FLAGS_DCC_ACCESSORY_DECODER = 0x80  (CV 29/541 bit 7 defined in NmraDcc.h)
------------------------------------------------------------------------
You MUST call the NmraDcc.process() method frequently from the Arduino loop() 
function for correct library operation

Dcc.process();
------------------------------------------------------------------------
This function is called whenever a normal DCC Turnout Packet is received

notifyDccAccState( uint16_t Addr, uint16_t BoardAddr, uint8_t OutputAddr, uint8_t State)

Addr = Decoder address
BoardAddr = Address of this decoder
OutputAddr = Address of Turnout on this decoder
State = 
------------------------------------------------------------------------
This function is called whenever a DCC Signal Aspect Packet is received

notifyDccSigState( uint16_t Addr, uint8_t OutputIndex, uint8_t State)

Addr = Decoder address
OutputIndex = Address of Signal Aspect
State = 
------------------------------------------------------------------------
notifyDccFunc( uint16_t Addr, uint8_t FuncNum, uint8_t FuncState)

Addr = Decoder address
FuncNum =
FuncState = 
------------------------------------------------------------------------
Perform a decoder total reset

notifyDccReset(uint8_t hardReset )

hardReset = 
 ------------------------------------------------------------------------
The decoder receives a Idle packet and should do nothing

notifyDccIdle(void)
 ------------------------------------------------------------------------
A locomotive packet is received

notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
 
Addr = Address received
Speed = Requested speed
ForwardDir = True if loco moves forward
MaxSpeed = 
------------------------------------------------------------------------
Checks if a CV is present in the table and is writable

notifyCVValid( uint16_t CV, uint8_t Writable )
 
CV = The number of the requested CV
Writable = True is CV is writable
------------------------------------------------------------------------
Read a CV value from the decoder table

notifyCVRead( uint16_t CV)

CV = The number of the requested CV 
------------------------------------------------------------------------
Write a CV with Value to the decoder table

notifyCVWrite( uint16_t CV, uint8_t Value)

CV = The number of the requested CV 
Value = Value to be written into the requested CV
------------------------------------------------------------------------
Check if the CV written to the table has the correct value

notifyCVChange( uint16_t CV, uint8_t Value)
 
CV = The number of the requested CV 
Value = Value of the changed requested CV
------------------------------------------------------------------------
notifyCVAck(void)

